chain of responsibility pattern advantages